System and method for generating player tracking data from broadcast video

ABSTRACT

A system and method of generating a player tracking prediction are described herein. A computing system retrieves a broadcast video feed for a sporting event. The computing system segments the broadcast video feed into a unified view. The computing system generates a plurality of data sets based on the plurality of trackable frames. The computing system calibrates a camera associated with each trackable frame based on the body pose information. The computing system generates a plurality of sets of short tracklets based on the plurality of trackable frames and the body pose information. The computing system connects each set of short tracklets by generating a motion field vector for each player in the plurality of trackable frames. The computing system predicts a future motion of a player based on the player&#39;s motion field vector using a neural network.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is also related to U.S. patent application Ser. No.16/805,009, filed Feb. 28, 2020, U.S. patent application Ser. No.16/805,116, filed Feb. 28, 2020, and U.S. patent application Ser. No.16/805,157, filed Feb. 28, 2020, which are incorporated by reference intheir entireties.

FIELD OF THE DISCLOSURE

The present disclosure generally relates to system and method forgenerating player tracking data from broadcast video.

BACKGROUND

Player tracking data has been implemented for a number of years in anumber of sports for both team and player analysis. Conventional playertracking systems, however, require sports analytics companies to installfixed cameras in each venue in which a team plays. This constraint haslimited the scalability of player tracking systems, as well as limiteddata collection to currently played matches. Further, such constraintprovides a significant cost to sports analytics companies due to thecosts associated with installing hardware in the requisite arenas, aswell as maintaining such hardware.

SUMMARY

In some embodiments, a method of generating a player tracking predictionis disclosed herein. A computing system retrieves a broadcast video feedfor a sporting event. The broadcast video feed includes a plurality ofvideo frames. The computing system segments the broadcast video feedinto a unified view. The unified view includes a plurality of trackableframes. The plurality of trackable frames is a subset of the pluralityof video frames. The computing system generates a plurality of data setsbased on the plurality of trackable frames. The plurality of data setsincludes playing surface segmentation information, ball trackinginformation, and body pose information for each player in each trackableframe. The computing system calibrates a camera associated with eachtrackable frame based on the playing surface segmentation informationand the body pose information. The computing system generates aplurality of sets of short tracklets based on the plurality of trackableframes and the body pose information. The computing system connects eachset of short tracklets by generating a motion field vector for eachplayer in the plurality of trackable frames. The computing systempredicts a future motion of a player based on the player's motion fieldvector using a neural network.

In some embodiments, a system for generating a player trackingprediction is disclosed herein. The computing system includes aprocessor and a memory. The memory has programming instructions storedthereon, which, when executed by the processor, performs one or moreoperations. The one or more operations include retrieving a broadcastvideo feed for a sporting event. The broadcast video feed includes aplurality of video frames. The one or more operations further includesegmenting the broadcast video feed into a unified view. The unifiedview includes a plurality of trackable frames, the plurality oftrackable frames is a subset of the plurality of video frames. The oneor more operations further include generating a plurality of data setsbased on the plurality of trackable frames. The plurality of data setsincludes playing surface segmentation information, ball trackinginformation, and body pose information for each player in each trackableframe. The one or more operations further include calibrating a cameraassociated with each trackable frame based on the playing surfacesegmentation information and the body pose information. The one or moreoperations further include generating a plurality of sets of shorttracklets based on the plurality of trackable frames and the body poseinformation. The one or more operations further include connecting eachset of short tracklets by generating a motion field vector for eachplayer in the plurality of trackable frames. The one or more operationsfurther include predicting a future motion of a player based on theplayer's motion field vector using a neural network.

In some embodiments, a non-transitory computer readable medium isdisclosed herein. The non-transitory computer readable medium includesone or more sequences of instructions that, when executed by one or moreprocessors, perform one or more operations. The one or more operationsinclude retrieving a broadcast video feed for a sporting event. Thebroadcast video feed includes a plurality of video frames. The one ormore operations further include segmenting the broadcast video feed intoa unified view. The unified view includes a plurality of trackableframes, the plurality of trackable frames is a subset of the pluralityof video frames. The one or more operations further include generating aplurality of data sets based on the plurality of trackable frames. Theplurality of data sets includes playing surface segmentationinformation, ball tracking information, and body pose information foreach player in each trackable frame. The one or more operations furtherinclude calibrating a camera associated with each trackable frame basedon the playing surface segmentation information and the body poseinformation. The one or more operations further include generating aplurality of sets of short tracklets based on the plurality of trackableframes and the body pose information. The one or more operations furtherinclude connecting each set of short tracklets by generating a motionfield vector for each player in the plurality of trackable frames. Theone or more operations further include predicting a future motion of aplayer based on the player's motion field vector using a neural network.

BRIEF DESCRIPTION OF THE DRAWINGS

So that the manner in which the above recited features of the presentdisclosure can be understood in detail, a more particular description ofthe disclosure, briefly summarized above, may be had by reference toembodiments, some of which are illustrated in the appended drawings. Itis to be noted, however, that the appended drawings illustrated onlytypical embodiments of this disclosure and are therefore not to beconsidered limiting of its scope, for the disclosure may admit to otherequally effective embodiments.

FIG. 1 is a block diagram illustrating a computing environment,according to example embodiments.

FIG. 2 is a block diagram illustrating a computing environment,according to example embodiments.

FIG. 3 is a block diagram illustrating aspects of operations discussedabove and below in conjunction with FIG. 2 and FIGS. 4-10, according toexample embodiments.

FIG. 4 is a flow diagram illustrating a method of generating playertracks, according to example embodiments.

FIG. 5 is a flow diagram illustrating a method of generating trackableframes, according to example embodiments.

FIG. 6 is a block diagram illustrating aspects of operations discussedabove in conjunction with FIG. 5, according to example embodiments.

FIG. 7 is a flow diagram illustrating a method of calibrating a camerafor each trackable frame, according to example embodiments.

FIG. 8 is a block diagram illustrating aspects of operations discussedabove in conjunction with FIG. 7, according to example embodiments.

FIG. 9 is a flow diagram illustrating a method of tracking players,according to example embodiments.

FIG. 10 is a flow diagram illustrating a method of tracking players,according to example embodiments.

FIG. 11 is a block diagram illustrating aspects of operations discussedabove in conjunction with FIG. 10, according to example embodiments.

FIG. 12 is a block diagram illustrating architecture ofre-identification agent, according to example embodiments.

FIG. 13A is a block diagram illustrating a computing device, accordingto example embodiments.

FIG. 13B is a block diagram illustrating a computing device, accordingto example embodiments.

To facilitate understanding, identical reference numerals have beenused, where possible, to designate identical elements that are common tothe figures. It is contemplated that elements disclosed in oneembodiment may be beneficially utilized on other embodiments withoutspecific recitation.

DETAILED DESCRIPTION

Player tracking data has been an invaluable resource for leagues andteams to evaluate not only the team itself, but the players on the team.Conventional approaches to harvesting or generating player tracking dataare limited, however, relied on installing fixed cameras in a venue inwhich a sporting event would take place. In other words, conventionalapproaches for a team to harvest or generate player tracking datarequired that team to equip each venue with a fixed camera system. Asthose skilled in the art recognize, this constraint has severely limitedthe scalability of player tracking systems. Further, this constraintalso limits player tracking data to matches played after installation ofthe fixed camera system, as historical player tracking data would simplybe unavailable.

The one or more techniques describe herein provide a significantimprovement over conventional systems by eliminating the need for afixed camera system. Instead, the one or more techniques describedherein are directed to leveraging the broadcast video feed of a sportingevent to generate player tracking data. By utilizing the broadcast videofeed of the sporting event, not only is the need for a dedicated fixedcamera system in each arena eliminated, but generating historical playertracking data from historical sporting events would now be possible.

Leveraging the broadcast video feed of the sporting event is not,however, a trivial task. For example, included in a broadcast video feedmay a variety of different camera angles, close-ups of players,close-ups of the crowd, close-ups of the coach, video of thecommentators, commercials, halftime shows, and the like. Further, due tothe pace of a sporting event, it is inevitable that some players beeither occluded from the broadcast video feed cameras or entirely out ofthe line of sight of the broadcast video feed cameras.

Accordingly, the one or more techniques describe herein provide variousmechanisms directed to overcoming these challenges so that the broadcastvideo feed of a sporting event may be used to generate player trackingdata.

FIG. 1 is a block diagram illustrating a computing environment 100,according to example embodiments. Computing environment 100 may includecamera system 102, organization computing system 104, and one or moreclient devices 108 communicating via network 105.

Network 105 may be of any suitable type, including individualconnections via the Internet, such as cellular or Wi-Fi networks. Insome embodiments, network 105 may connect terminals, services, andmobile devices using direct connections, such as radio frequencyidentification (RFID), near-field communication (NFC), Bluetooth™,low-energy Bluetooth™ (BLE), Wi-Fi™ ZigBee™, ambient backscattercommunication (ABC) protocols, USB, WAN, or LAN. Because the informationtransmitted may be personal or confidential, security concerns maydictate one or more of these types of connection be encrypted orotherwise secured. In some embodiments, however, the information beingtransmitted may be less personal, and therefore, the network connectionsmay be selected for convenience over security.

Network 105 may include any type of computer networking arrangement usedto exchange data or information. For example, network 105 may be theInternet, a private data network, virtual private network using a publicnetwork and/or other suitable connection(s) that enables components incomputing environment 100 to send and receive information between thecomponents of environment 100.

Camera system 102 may be positioned in a venue 106. For example, venue106 may be configured to host a sporting event that includes one or moreagents 112. Camera system 102 may be configured to capture the motionsof all agents (i.e., players) on the playing surface, as well as one ormore other objects of relevance (e.g., ball, referees, etc.). In someembodiments, camera system 102 may be an optically-based system using,for example, a plurality of fixed cameras. For example, a system of sixstationary, calibrated cameras, which project the three-dimensionallocations of players and the ball onto a two-dimensional overhead viewof the court may be used. In another example, a mix of stationary andnon-stationary cameras may be used to capture motions of all agents onthe playing surface as well as one or more objects of relevance. Asthose skilled in the art recognize, utilization of such camera system(e.g., camera system 102) may result in many different camera views ofthe court (e.g., high sideline view, free-throw line view, huddle view,face-off view, end zone view, etc.). Generally, camera system 102 may beutilized for the broadcast feed of a given match. Each frame of thebroadcast feed may be stored in a game file 110.

Camera system 102 may be configured to communicate with organizationcomputing system 104 via network 105. Organization computing system 104may be configured to manage and analyze the broadcast feed captured bycamera system 102. Organization computing system 104 may include atleast a web client application server 114, a data store 118, anauto-clipping agent 120, a data set generator 122, a camera calibrator124, a player tracking agent 126, and an interface agent 128. Each ofauto-clipping agent 120, data set generator 122, camera calibrator 124,player tracking agent 126, and interface agent 128 may be comprised ofone or more software modules. The one or more software modules may becollections of code or instructions stored on a media (e.g., memory oforganization computing system 104) that represent a series of machineinstructions (e.g., program code) that implements one or morealgorithmic steps. Such machine instructions may be the actual computercode the processor of organization computing system 104 interprets toimplement the instructions or, alternatively, may be a higher level ofcoding of the instructions that is interpreted to obtain the actualcomputer code. The one or more software modules may also include one ormore hardware components. One or more aspects of an example algorithmmay be performed by the hardware components (e.g., circuitry) itself,rather as a result of the instructions.

Data store 118 may be configured to store one or more game files 124.Each game file 124 may include the broadcast data of a given match. Forexample, the broadcast data may a plurality of video frames captured bycamera system 102.

Auto-clipping agent 120 may be configured parse the broadcast feed of agiven match to identify a unified view of the match. In other words,auto-clipping agent 120 may be configured to parse the broadcast feed toidentify all frames of information that are captured from the same view.In one example, such as in the sport of basketball, the unified view maybe a high sideline view. Auto-clipping agent 120 may clip or segment thebroadcast feed (e.g., video) into its constituent parts (e.g.,difference scenes in a movie, commercials from a match, etc.). Togenerate a unified view, auto-clipping agent 120 may identify thoseparts that capture the same view (e.g., high sideline view).Accordingly, auto-clipping agent 120 may remove all (or a portion) ofuntrackable parts of the broadcast feed (e.g., player close-ups,commercials, half-time shows, etc.). The unified view may be stored as aset of trackable frames in a database.

Data set generator 122 may be configured to generate a plurality of datasets from the trackable frames. In some embodiments, data set generator122 may be configured to identify body pose information. For example,data set generator 122 may utilize body pose information to detectplayers in the trackable frames. In some embodiments, data set generator122 may be configured to further track the movement of a ball or puck inthe trackable frames. In some embodiments, data set generator 122 may beconfigured to segment the playing surface in which the event is takingplace to identify one or more markings of the playing surface. Forexample, data set generator 122 may be configured to identify court(e.g., basketball, tennis, etc.) markings, field (e.g., baseball,football, soccer, rugby, etc.) markings, ice (e.g., hockey) markings,and the like. The plurality of data sets generated by data set generator122 may be subsequently used by camera calibrator 124 for calibratingthe cameras of each camera system 102.

Camera calibrator 124 may be configured to calibrate the cameras ofcamera system 102. For example, camera calibrator 124 may be configuredto project players detected in the trackable frames to real worldcoordinates for further analysis. Because cameras in camera systems 102are constantly moving in order to focus on the ball or key plays, suchcameras are unable to be pre-calibrated. Camera calibrator 124 may beconfigured to improve or optimize player projection parameters using ahomography matrix.

Player tracking agent 126 may be configured to generate tracks for eachplayer on the playing surface. For example, player tracking agent 126may leverage player pose detections, camera calibration, and broadcastframes to generate such tracks. In some embodiments, player trackingagent 126 may further be configured to generate tracks for each player,even if, for example, the player is currently out of a trackable frame.For example, player tracking agent 126 may utilize body pose informationto link players that have left the frame of view.

Interface agent 128 may be configured to generate one or more graphicalrepresentations corresponding to the tracks for each player generated byplayer tracking agent 126. For example, interface agent 128 may beconfigured to generate one or more graphical user interfaces (GUIs) thatinclude graphical representations of player tracking each predictiongenerated by player tracking agent 126.

Client device 108 may be in communication with organization computingsystem 104 via network 105. Client device 108 may be operated by a user.For example, client device 108 may be a mobile device, a tablet, adesktop computer, or any computing system having the capabilitiesdescribed herein. Users may include, but are not limited to, individualssuch as, for example, subscribers, clients, prospective clients, orcustomers of an entity associated with organization computing system104, such as individuals who have obtained, will obtain, or may obtain aproduct, service, or consultation from an entity associated withorganization computing system 104.

Client device 108 may include at least application 132. Application 132may be representative of a web browser that allows access to a websiteor a stand-alone application. Client device 108 may access application132 to access one or more functionalities of organization computingsystem 104. Client device 108 may communicate over network 105 torequest a webpage, for example, from web client application server 114of organization computing system 104. For example, client device 108 maybe configured to execute application 132 to access content managed byweb client application server 114. The content that is displayed toclient device 108 may be transmitted from web client application server114 to client device 108, and subsequently processed by application 132for display through a graphical user interface (GUI) of client device108.

FIG. 2 is a block diagram illustrating a computing environment 200,according to example embodiments. As illustrated, computing environment200 includes auto-clipping agent 120, data set generator 122, cameracalibrator 124, and player tracking agent 126 communicating via network205.

Network 205 may be of any suitable type, including individualconnections via the Internet, such as cellular or Wi-Fi networks. Insome embodiments, network 205 may connect terminals, services, andmobile devices using direct connections, such as radio frequencyidentification (RFID), near-field communication (NFC), Bluetooth™,low-energy Bluetooth™ (BLE), Wi-Fi™ ZigBee™, ambient backscattercommunication (ABC) protocols, USB, WAN, or LAN. Because the informationtransmitted may be personal or confidential, security concerns maydictate one or more of these types of connection be encrypted orotherwise secured. In some embodiments, however, the information beingtransmitted may be less personal, and therefore, the network connectionsmay be selected for convenience over security.

Network 205 may include any type of computer networking arrangement usedto exchange data or information. For example, network 205 may be theInternet, a private data network, virtual private network using a publicnetwork and/or other suitable connection(s) that enables components incomputing environment 200 to send and receive information between thecomponents of environment 200.

Auto-clipping agent 120 may include principal component analysis (PCA)agent 202, clustering model 204, and neural network 206. As recitedabove, when trying to understand and extract data from a broadcast feed,auto-clipping agent 120 may be used to clip or segment the video intoits constituent parts. In some embodiments, auto-clipping agent 120 mayfocus on separating a predefined, unified view (e.g., a high sidelineview) from all other parts of the broadcast stream.

PCA agent 202 may be configured to utilize a PCA analysis to perform perframe feature extraction from the broadcast feed. For example, given apre-recorded video, PCA agent 202 may extract a frame every X-seconds(e.g., 10 seconds) to build a PCA model of the video. In someembodiments, PCA agent 202 may generate the PCA model using incrementalPCA, through which PCA agent 202 may select a top subset of components(e.g., top 120 components) to generate the PCA model. PCA agent 202 maybe further configured to extract one frame every X seconds (e.g., onesecond) from the broadcast stream and compress the frames using PCAmodel. In some embodiments, PCA agent 202 may utilize PCA model tocompress the frames into 120-dimensional form. For example, PCA agent202 may solve for the principal components in a per video manner andkeep the top 100 components per frame to ensure accurate clipping.

Clustering model 204 may be configured to the cluster the top subset ofcomponents into clusters. For example, clustering model 204 may beconfigured to center, normalize, and cluster the top 120 components intoa plurality of clusters. In some embodiments, for clustering ofcompressed frames, clustering model 204 may implement k-meansclustering. In some embodiments, clustering model 204 may set k=9clusters. K-means clustering attempts to take some data x={x₁, x₂, . . ., x_(n)} and divide it into k subsets, S={S₁, S₂, . . . S_(k)} byoptimizing:

$\underset{S}{\arg\;\min}\;{\sum\limits_{j}^{k}{\sum\limits_{x \in S_{j}}{{x - \mu_{j}}}^{2}}}$where μ_(j) is the mean of the data in the set S_(j). In other words,clustering model 204 attempts to find clusters with the smallestinter-cluster variance using k-means clustering techniques. Clusteringmodel 204 may label each frame with its respective cluster number (e.g.,cluster 1, cluster 2, . . . , cluster k).

Neural network 206 may be configured to classify each frame as trackableor untrackable. A trackable frame may be representative of a frame thatincludes captures the unified view (e.g., high sideline view). Anuntrackable frame may be representative of a frame that does not capturethe unified view. To train neural network 206, an input data set thatincludes thousands of frames pre-labeled as trackable or untrackablethat are run through the PCA model may be used. Each compressed frameand label pair (i.e., cluster number and trackable/untrackable) may beprovided to neural network 206 for training.

In some embodiments, neural network 206 may include four layers. Thefour layers may include an input layer, two hidden layers, and an outputlayer. In some embodiments, input layer may include 120 units. In someembodiments, each hidden layer may include 240 units. In someembodiments, output layer may include two units. The input layer andeach hidden layer may use sigmoid activation functions. The output layermay use a SoftMax activation function. To train neural network 206,auto-clipping agent 120 may reduce (e.g., minimize) the binarycross-entropy loss between the predicted label for sample ŷ_(j) and thetrue label y_(j) by:

$H = {{{- \frac{1}{N}}{\sum\limits_{j}^{N}{y_{j}\log y}}} + {\left( {1 - y_{j}} \right){\log\left( {1 -} \right)}}}$

Accordingly, once trained, neural network 206 may be configured toclassify each frame as untrackable or trackable. As such, each frame mayhave two labels: a cluster number and trackable/untrackableclassification. Auto-clipping agent 120 may utilize the two labels todetermine if a given cluster is deemed trackable or untrackable. Forexample, if auto-clipping agent 120 determines that a threshold numberof frames in a cluster are considered trackable (e.g., 80%),auto-clipping agent 120 may conclude that all frames in the cluster aretrackable. Further, if auto-clipping agent 120 determines that less thana threshold number of frames in a cluster are considered untrackable(e.g., 30% and below), auto-clipping agent 120 may conclude that allframes in the cluster are untrackable. Still further, if auto-clippingagent 120 determines that a certain number of frames in a cluster areconsidered trackable (e.g., between 30% and 80%), auto-clipping agent120 may request that an administrator further analyze the cluster. Onceeach frame is classified, auto-clipping agent 120 may clip or segmentthe trackable frames. Auto-clipping agent 120 may store the segments oftrackable frames in database 205 associated therewith.

Data set generator 122 may be configured to generate a plurality of datasets from auto-clipping agent 120. As illustrated, data set generator122 may include pose detector 212, ball detector 214, and playingsurface segmenter 216. Pose detector 212 may be configured to detectplayers within the broadcast feed. Data set generator 122 may provide,as input, to pose detector 212 both the trackable frames stored indatabase 205 as well as the broadcast video feed. In some embodiments,pose detector 212 may implement Open Pose to generate body pose data todetect players in the broadcast feed and the trackable frames. In someembodiments, pose detector 212 may implement sensors positioned onplayers to capture body pose information. Generally, pose detector 212may use any means to obtain body pose information from the broadcastvideo feed and the trackable frame. The output from pose detector 212may be pose data stored in database 215 associated with data setgenerator 122.

Ball detector 214 may be configured to detect and track the ball (orpuck) within the broadcast feed. Data set generator 122 may provide, asinput, to ball detector 214 both the trackable frames stored in database205 and the broadcast video feed. In some embodiments, ball detector 214may utilize a faster region-convolutional neural network (R-CNN) todetect and track the ball in the trackable frames and broadcast videofeed. Faster R-CNN is a regional proposal based network. Faster R-CNNuses a convolutional neural network to propose a region of interest, andthen classifies the object in each region of interest. Because it is asingle unified network, the regions of interest and the classificationsteps may improve each other, thus allowing the classification to handleobjects of various sizes. The output from ball detector 214 may be balldetection data stored in database 215 associated with data set generator122.

Playing surface segmenter 216 may be configured to identify playingsurface markings in the broadcast feed. Data set generator 122 mayprovide, as input, to playing surface segmenter 216 both trackableframes stored in database 205 and the broadcast video feed. In someembodiments, playing surface segmenter 216 may be configured to utilizea neural network to identify playing surface markings. The output fromplaying surface segmenter 216 may be playing surface markings stored indatabase 215 associated with data set generator 122.

Camera calibrator 124 may be configured to address the issue of movingcamera calibration in sports. Camera calibrator 124 may include spatialtransfer network 224 and optical flow module 226. Camera calibrator 124may receive, as input, segmented playing surface information generatedby playing surface segmenter 216, the trackable clip information, andposed information. Given such inputs, camera calibrator 124 may beconfigured to project coordinates in the image frame to real-worldcoordinates for tracking analysis.

Keyframe matching module 224 may receive, as input, output from playingsurface segmenter 216 and a set of templates. For each frame, keyframematching module 224 may match the output from playing surface segmenter216 to a template. Those frames that are able to match to a giventemplate are considered keyframes. In some embodiments, keyframematching module 224 may implement a neural network to match the one ormore frames. In some embodiments, keyframe matching module 224 mayimplement cross-correlation to match the one or more frames.

Spatial transformer network (STN) 224 may be configured to receive, asinput, the identified keyframes from keyframe matching module 224. STN224 may implement a neural network to fit a playing surface model tosegmentation information of the playing surface. By fitting the playingsurface model to such output, STN 224 may generate homography matricesfor each keyframe.

Optical flow module 226 may be configured to identify the pattern ofmotion of objects from one trackable frame to another. In someembodiments, optical flow module 226 may receive, as input, trackableframe information and body pose information for players in eachtrackable frame. Optical flow module 226 may use body pose informationto remove players from the trackable frame information. Once removed,optical flow module 226 may determine the motion between frames toidentify the motion of a camera between successive frames. In otherwords, optical flow module 226 may identify the flow field from oneframe to the next.

Optical flow module 226 and STN 224 may work in conjunction to generatea homography matrix. For example, optical flow module 226 and STN 224may generate a homography matrix for each trackable frame, such that acamera may be calibrated for each frame. The homography matrix may beused to project the track or position of players into real-worldcoordinates. For example, the homography matrix may indicate a2-dimensional to 2-dimensional transform, which may be used to projectthe players' locations from image coordinates to the real worldcoordinates on the playing surface.

Player tracking agent 126 may be configured to generate a track for eachplayer in a match. Player tracking agent 126 may include neural network232 and re-identification agent 232. Player tracking agent 126 mayreceive, as input, trackable frames, pose data, calibration data, andbroadcast video frames. In a first phase, player tracking agent 126 maymatch pairs of player patches, which may be derived from poseinformation, based on appearance and distance. For example, let H_(j)^(i) be the player patch of the j^(th) player at time t, and let I_(j)^(t)={x_(j) ^(t),y_(j) ^(t),w_(j) ^(t),h_(j) ^(t)} be the imagecoordinates x_(j) ^(t),y_(j) ^(t), the width w_(j) ^(t), and the heighth_(j) ^(t) of the j^(th) player at time t. Using this, player trackingagent 126 may associate any pair of detections using the appearancecross correlation C_(ij) ^(t)=H_(i) ^(t)*H_(j) ^(t+1) and L_(ij)^(t)∥I_(i) ^(t)−I_(j) ^(t+1)∥₂ ² by finding:

$\arg{\max\limits_{ij}\left( {C_{ij}^{t} + L_{ij}^{t}} \right)}$where I is the bounding box positions (x, y), width w, and height h; Cis the cross correlation between the image patches (e.g., image cutoutusing a bounding box) and measures similarity between two image patches;and L is a measure of the difference (e.g., distance) between twobounding boxes I.

Performing this for every pair may generate a large set of shorttracklets. The end points of these tracklets may then be associated witheach other based on motion consistency and color histogram similarity.In some embodiments, a tracklet may be referred to as a subset of atrack.

For example, let v_(i) be the extrapolated velocity from the end of thei^(th) tracklet and v_(j) be the velocity extrapolated from thebeginning of the j^(th) tracklet. Then c_(ij)=v_(i)·v_(j) may representthe motion consistency score. Furthermore, let p(h)_(i) represent thelikelihood of a color h being present in an image patch i. Playertracking agent 126 may measure the color histogram similarity usingBhattacharyya distance:D _(B)(p _(i) ,p _(j))=−ln(BC(p _(i) ,p _(j))) with BC(p _(i) ,p_(j))=Σ_(h)√{square root over (p _(i)(h)p _(j)(h))}

Recall, tracking agent 120 finds the matching pair of tracklets byfinding:

$\arg{\max\limits_{ij}{\left( {c_{ij} + {D_{B}\left( {p_{i},p_{j}} \right)}} \right).}}$

Solving for every pair of broken tracklets may result in a set of cleantracklets, while leaving some tracklets with large, i.e., many frames,gaps. To connect the large gaps, player tracking agent may augmentaffinity measures to include a motion field estimation, which mayaccount for the change of player direction that occurs over many frames.

The motion field may be a vector field that represents the velocitymagnitude and direction as a vector on each location on the playingsurface. Given the known velocity of a number of players on the playingsurface, the full motion field may be generated using cubic splineinterpolation. For example, let X_(i)={x_(i) ^(t)}_(t∈(0,T)) to be thecourt position of a player i at every time t. Then, there may exist apair of points that have a displacement d_(i) ^(λ)(x_(i) ^(t))=x_(i)^(t)−x_(i) ^(t+1) if λ<T. Accordingly, the motion field may then be:

${{V\left( {x,\lambda} \right)} = {{G\left( {x,5} \right)}*{\sum\limits_{i}{d_{i}^{\lambda}\left( x_{i}^{t} \right)}}}},$where G(x, 5) may be a Gaussian kernel with standard deviation equal toabout five feet. In other words, motion field may be a Gaussian blur ofall displacements.

Neural network 232 may be used to predict player motion fields givenground truth player trajectories. Given a set of ground truth playertrajectories, X_(i), the velocity of each player at each frame may becalculated, which may provide the ground truth motion field for neuralnetwork 232 to learn. For example, given a set of ground truth playertrajectories X_(i), player tracking agent 126 may be configured togenerate the set {circumflex over (V)}(x,λ), where {circumflex over(V)}(x,λ) may be the predicted motion field. Neural network 232 may betrained, for example, to minimize ∥V(x,λ)−{circumflex over (V)}(x,λ)∥₂². Player trajectory agent may then generate the affinity score for anytracking gap of size A by:K _(ij) =V(x,λ)·d _(ij)where d_(ij)=x_(i) ^(t)−x_(j) ^(t+λ) is the displacement vector betweenall broken tracks with a gap size of λ.

Re-identification agent 234 may be configured to link players that haveleft the field of view. Re-identification agent 234 may include trackgenerator 236, conditional autoencoder 240, and Siamese network 242.

Track generator 236 may be configured to generate a gallery of tracks.Track generator 236 may receive a plurality of tracks from database 205.For each track X, there may include a player identity label y, and foreach player patch I, pose information p may be provided by the posedetection stage. Given a set of player tracks, track generator 236 maybuild a gallery for each track where the jersey number of a player (orsome other static feature) is always visible. The body pose informationgenerated by data set generator 122 allows track generator 236 todetermine a player's orientation. For example, track generator 236 mayutilize a heuristic method, which may use the normalized shoulder widthto determine the orientation:

$S_{orient} = \frac{{{l_{Lshoulder} - l_{Rshoulder}}}_{2}}{{{l_{Neck} - l_{Hip}}}_{2}}$where l may represent the location of one body part. The width ofshoulder may be normalized by the length of the torso so that the effectof scale may be eliminated. As two shoulders should be apart when aplayer faces towards or backwards from the camera, track generator 236may use those patches whose S_(orient) is larger than a threshold tobuild the gallery. After this stage, each track X_(n), may include agallery:G _(n) ={I _(i) |S _(orient,i)>thresh}∀I _(i) ∈X _(n)

Conditional autoencoder 240 may be configured to identify one or morefeatures in each track. For example, unlike conventional approaches tore-identification issues, players in team sports may have very similarappearance features, such as clothing style, clothing color, and skincolor. One of the more intuitive differences may be the jersey numberthat may be shown at the front and/or back side of each jersey. In orderto capture those specific features, conditional autoencoder 240 may betrained to identify such features.

In some embodiments, conditional autoencoder 240 may be a three-layerconvolutional autoencoder, where the kernel sizes may be 3×3 for allthree layers, in which there are 64, 128, 128 channels respectively.Those hyper-parameters may be tuned to ensure that jersey number may berecognized from the reconstructed images so that the desired featuresmay be learned in the autoencoder. In some embodiments, f(I_(i)) may beused to denote the features that are learned from image i.

Use of conditional autoencoder 240 improves upon conventional processesfor a variety of reasons. First, there is typically not enough trainingdata for every player because some players only play a very short timein each game. Second, different teams can have the same jersey colorsand jersey numbers, so classifying those players may be difficult.

Siamese network 242 may be used to measure the similarity between twoimage patches. For example, Siamese network 242 may be trained tomeasure the similarity between two image patches based on their featurerepresentations f(I). Given two image patches, their featurerepresentations f(I₁) and f(I_(j)) may be flattened, connected, andinput into a perception network. In some embodiments, L₂ norm may beused to connect the two sub-networks of f(I_(i)) and f(I_(j)). In someembodiments, perception network may include three layers, which mayinclude 1024, 512, and 216 hidden units, respectively. Such network maybe used to measure the similarity s(I_(i),I_(j)) between every pair ofimage patches of the two tracks that have no time overlapping. In orderto increase the robustness of the prediction, the final similarity scoreof the two tracks may be the average of all pairwise scores in theirrespective galleries:

${S\left( {x_{n\prime}x_{m}} \right)} = {\frac{1}{{G_{n}}{G_{m}}}{\sum\limits_{{i \in G_{n}},{j \in G_{m}}}{s\left( {I_{i},I_{j}} \right)}}}$

This similarity score may be computed for every two tracks that do nothave time overlapping. If the score is higher than some threshold, thosetwo tracks may be associated.

FIG. 3 is a block diagram 300 illustrating aspects of operationsdiscussed above and below in conjunction with FIG. 2 and FIGS. 4-10,according to example embodiments. Block diagram 300 may illustrate theoverall workflow of organization computing system 104 in generatingplayer tracking information. Block diagram 300 may include set ofoperations 302-308. Set of operations 302 may be directed to generatingtrackable frames (e.g., Method 500 in FIG. 5). Set of operations 304 maybe directed to generating one or more data sets from trackable frames(e.g., operations performed by data set generator 122). Set ofoperations 306 may be directed to camera calibration operations (e.g.,Method 700 in FIG. 7). Set of operations 308 may be directed togenerating and predicting player tracks (e.g., Method 900 if FIG. 9 andMethod 1000 in FIG. 10).

FIG. 4 is a flow diagram illustrating a method 400 of generating playertracks, according to example embodiments. Method 400 may begin at step402.

At step 402, organization computing system 104 may receive (or retrieve)a broadcast feed for an event. In some embodiments, the broadcast feedmay be a live feed received in real-time (or near real-time) from camerasystem 102. In some embodiments, the broadcast feed may be a broadcastfeed of a game that has concluded. Generally, the broadcast feed mayinclude a plurality of frames of video data. Each frame may capture adifferent camera perspective.

At step 404, organization computing system 104 may segment the broadcastfeed into a unified view. For example, auto-clipping agent 120 may beconfigured to parse the plurality of frames of data in the broadcastfeed to segment the trackable frames from the untrackable frames.Generally, trackable frames may include those frames that are directedto a unified view. For example, the unified view may be considered ahigh sideline view. In other examples, the unified view may be anendzone view. In other examples, the unified view may be a top cameraview.

At step 406, organization computing system 104 may generate a pluralityof data sets from the trackable frames (i.e., the unified view). Forexample, data set generator 122 may be configured to generate aplurality of data sets based on trackable clips received fromauto-clipping agent 120. In some embodiments, pose detector 212 may beconfigured to detect players within the broadcast feed. Data setgenerator 122 may provide, as input, to pose detector 212 both thetrackable frames stored in database 205 as well as the broadcast videofeed. The output from pose detector 212 may be pose data stored indatabase 215 associated with data set generator 122.

Ball detector 214 may be configured to detect and track the ball (orpuck) within the broadcast feed. Data set generator 122 may provide, asinput, to ball detector 214 both the trackable frames stored in database205 and the broadcast video feed. In some embodiments, ball detector 214may utilize a faster R-CNN to detect and track the ball in the trackableframes and broadcast video feed. The output from ball detector 214 maybe ball detection data stored in database 215 associated with data setgenerator 122.

Playing surface segmenter 216 may be configured to identify playingsurface markings in the broadcast feed. Data set generator 122 mayprovide, as input, to playing surface segmenter 216 both trackableframes stored in database 205 and the broadcast video feed. In someembodiments, playing surface segmenter 216 may be configured to utilizea neural network to identify playing surface markings. The output fromplaying surface segmenter 216 may be playing surface markings stored indatabase 215 associated with data set generator 122.

Accordingly, data set generator 120 may generate information directed toplayer location, ball location, and portions of the court in alltrackable frames for further analysis.

At step 408, organization computing system 104 may calibrate the camerain each trackable frame based on the data sets generated in step 406.For example, camera calibrator 124 may be configured to calibrate thecamera in each trackable frame by generating a homography matrix, usingthe trackable frames and information. The homography matrix allowscamera calibrator 124 to take those trajectories of each player in agiven frame and project those trajectories into real-world coordinates.By projection player position and trajectories into real worldcoordinates for each frame, camera calibrator 124 may ensure that thecamera is calibrated for each frame.

At step 410, organization computing system 104 may be configured togenerate or predict a track for each player. For example, playertracking agent 126 may be configured to generate or predict a track foreach player in a match. Player tracking agent 126 may receive, as input,trackable frames, pose data, calibration data, and broadcast videoframes. Using such inputs, player tracking agent 126 may be configuredto construct player motion throughout a given match. Further, playertracking agent 126 may be configured to predict player trajectoriesgiven previous motion of each player.

FIG. 5 is a flow diagram illustrating a method 500 of generatingtrackable frames, according to example embodiments. Method 500 maycorrespond to operation 404 discussed above in conjunction with FIG. 4.Method 500 may begin at step 502.

At step 502, organization computing system 104 may receive (or retrieve)a broadcast feed for an event. In some embodiments, the broadcast feedmay be a live feed received in real-time (or near real-time) from camerasystem 102. In some embodiments, the broadcast feed may be a broadcastfeed of a game that has concluded. Generally, the broadcast feed mayinclude a plurality of frames of video data. Each frame may capture adifferent camera perspective.

At step 504, organization computing system 104 may generate a set offrames for image classification. For example, auto-clipping agent 120may utilize a PCA analysis to perform per frame feature extraction fromthe broadcast feed. Given, for example, a pre-recorded video,auto-clipping agent 120 may extract a frame every X-seconds (e.g., 10seconds) to build a PCA model of the video. In some embodiments,auto-clipping agent 120 may generate the PCA model using incrementalPCA, through which auto-clipping agent 120 may select a top subset ofcomponents (e.g., top 120 components) to generate the PCA model.Auto-clipping agent 120 may be further configured to extract one frameevery X seconds (e.g., one second) from the broadcast stream andcompress the frames using PCA model. In some embodiments, auto-clippingagent 120 may utilize PCA model to compress the frames into120-dimensional form. For example, auto-clipping agent 120 may solve forthe principal components in a per video manner and keep the top 100components per frame to ensure accurate clipping. Such subset ofcompressed frames may be considered the set of frames for imageclassification. In other words, PCA model may be used to compress eachframe to a small vector, so that clustering can be conducted on theframes more efficiently. The compression may be conducted by selectingthe top N components from PCA model to represent the frame. In someexamples, N may be 100.

At step 506, organization computing system 104 may assign each frame inthe set of frames to a given cluster. For example, auto-clipping agent120 may be configured to center, normalize, and cluster the top 120components into a plurality of clusters. In some embodiments, forclustering of compressed frames, auto-clipping agent 120 may implementk-means clustering. In some embodiments, auto-clipping agent 120 may setk=9 clusters. K-means clustering attempts to take some data x={x₁, x₂, .. . , x_(n)} and divide it into k subsets, S={S₁, S₂, . . . S_(k)} byoptimizing:

$\underset{S}{\arg\;\min}{\sum\limits_{j}^{k}{\sum\limits_{x \in S_{j}}{{x - \mu_{j}}}^{2}}}$where μ_(j) is the mean of the data in the set S_(j). In other words,clustering model 204 attempts to find clusters with the smallestinter-cluster variance using k-means clustering techniques. Clusteringmodel 204 may label each frame with its respective cluster number (e.g.,cluster 1, cluster 2, . . . , cluster k).

At step 508, organization computing system 104 may classify each frameas trackable or untrackable. For example, auto-clipping agent 120 mayutilize a neural network to classify each frame as trackable oruntrackable. A trackable frame may be representative of a frame thatincludes captures the unified view (e.g., high sideline view). Anuntrackable frame may be representative of a frame that does not capturethe unified view. To train the neural network (e.g., neural network206), an input data set that includes thousands of frames pre-labeled astrackable or untrackable that are run through the PCA model may be used.Each compressed frame and label pair (i.e., cluster number andtrackable/untrackable) may be provided to neural network for training.Accordingly, once trained, auto-clipping agent 120 may classify eachframe as untrackable or trackable. As such, each frame may have twolabels: a cluster number and trackable/untrackable classification.

At step 510, organization computing system 104 may compare each clusterto a threshold. For example, auto-clipping agent 120 may utilize the twolabels to determine if a given cluster is deemed trackable oruntrackable. In some embodiments, f auto-clipping agent 120 determinesthat a threshold number of frames in a cluster are considered trackable(e.g., 80%), auto-clipping agent 120 may conclude that all frames in thecluster are trackable. Further, if auto-clipping agent 120 determinesthat less than a threshold number of frames in a cluster are considereduntrackable (e.g., 30% and below), auto-clipping agent 120 may concludethat all frames in the cluster are untrackable. Still further, ifauto-clipping agent 120 determines that a certain number of frames in acluster are considered trackable (e.g., between 30% and 80%),auto-clipping agent 120 may request that an administrator furtheranalyze the cluster.

If at step 510 organization computing system 104 determines that greaterthan a threshold number of frames in the cluster are trackable, then atstep 512 auto-clipping agent 120 may classify the cluster as trackable.

If, however, at step 510 organization computing system 104 determinesthat less than a threshold number of frames in the cluster aretrackable, then at step 514, auto-clipping agent 120 may classify thecluster as untrackable.

FIG. 6 is a block diagram 600 illustrating aspects of operationsdiscussed above in conjunction with method 500, according to exampleembodiments. As shown, block diagram 600 may include a plurality of setsof operations 602-608.

At set of operations 602, video data (e.g., broadcast video) may beprovided to auto-clipping agent 120. Auto-clipping agent 120 may extractframes from the video. In some embodiments, auto-clipping agent 120 mayextract frames from the video at a low frame rate. An incremental PCAalgorithm may be used by auto-clipping agent to select the top 120components (e.g., frames) from the set of frames extracted byauto-clipping agent 120. Such operations may generate a video specificPCA model.

At set of operations 604, video data (e.g., broadcast video) may beprovided to auto-clipping agent 120. Auto-clipping agent 120 may extractframes from the video. In some embodiments, auto-clipping agent 120 mayextract frames from the video at a medium frame rate. The video specificPCA model may be used by auto-clipping agent 120 to compress the framesextracted by auto-clipping agent 120.

At set of operations 606, the compressed frames and a pre-selectednumber of desired clusters may be provided to auto-clipping agent 120.Auto-clipping agent 120 may utilize k-means clustering techniques togroup the frames into one or more clusters, as set forth by thepre-selected number of desired clusters. Auto-clipping agent 120 mayassign a cluster label to each compressed frames. Auto-clipping agent120 may further be configured to classify each frame as trackable oruntrackable. Auto-clipping agent 120 may label each respective frame assuch.

At set of operations 608, auto-clipping agent 120 may analyze eachcluster to determine if the cluster includes at least a threshold numberof trackable frames. For example, as illustrated, if 80% of the framesof a cluster are classified as trackable, then auto-clipping agent 120may consider the entire cluster as trackable. If, however, less than 80%of a cluster is classified as trackable, auto-clipping agent maydetermine if at least a second threshold number of frames in a clusterare trackable. For example, is illustrated if 70% of the frames of acluster are classified as untrackable, auto-clipping agent 120 mayconsider the entire cluster trackable. If, however, less than 70% of theframes of the cluster are classified as untrackable, i.e., between 30%and 70% trackable, then human annotation may be requested.

FIG. 7 is a flow diagram illustrating a method 700 of calibrating acamera for each trackable frame, according to example embodiments.Method 700 may correspond to operation 408 discussed above inconjunction with FIG. 4. Method 700 may begin at step 702.

At step 702, organization computing system 104 may retrieve video dataand pose data for analysis. For example, camera calibrator 124 mayretrieve from database 205 the trackable frames for a given match andpose data for players in each trackable frame. Following step 702,camera calibrator 124 may execute two parallel processes to generatehomography matrix for each frame. Accordingly, the following operationsare not meant to be discussed as being performed sequentially, but mayinstead be performed in parallel or sequentially.

At step 704, organization computing system 104 may remove players fromeach trackable frame. For example, camera calibrator 124 may parse eachtrackable frame retrieved from database 205 to identify one or moreplayers contained therein. Camera calibrator 124 may remove the playersfrom each trackable frame using the pose data retrieved from database205. For example, camera calibrator 124 may identify those pixelscorresponding to pose data and remove the identified pixels from a giventrackable frame.

At step 706, organization computing system 104 may identify the motionof objects (e.g., surfaces, edges, etc.) between successive trackableframes. For example, camera calibrator 124 may analyze successivetrackable frames, with players removed therefrom, to determine themotion of objects from one frame to the next. In other words, opticalflow module 226 may identify the flow field between successive trackableframes.

At step 708, organization computing system 104 may match an output fromplaying surface segmenter 216 to a set of templates. For example, cameracalibrator 124 may match one or more frames in which the image of theplaying surface is clear to one or more templates. Camera calibrator 124may parse the set of trackable clips to identify those clips thatprovide a clear picture of the playing surface and the markings therein.Based on the selected clips, camera calibrator 124 may compare suchimages to playing surface templates. Each template may represent adifferent camera perspective of the playing surface. Those frames thatare able to match to a given template are considered keyframes. In someembodiments, camera calibrator 124 may implement a neural network tomatch the one or more frames. In some embodiments, camera calibrator 124may implement cross-correlation to match the one or more frames.

At step 710, organization computing system 104 may fit a playing surfacemodel to each keyframe. For example, camera calibrator 124 may beconfigured to receive, as input, the identified keyframes. Cameracalibrator 124 may implement a neural network to fit a playing surfacemodel to segmentation information of the playing surface. By fitting theplaying surface model to such output, camera calibrator 124 may generatehomography matrices for each keyframe.

At step 712, organization computing system 104 may generate a homographymatrix for each trackable frame. For example, camera calibrator 124 mayutilize the flow fields identified in step 706 and the homographymatrices for each key frame to generate a homography matrix for eachframe. The homography matrix may be used to project the track orposition of players into real-world coordinates. For example, given thegeometric transform represented by the homography matrix, cameracalibrator 124 may use this transform to project the location of playerson the image to real-world coordinates on the playing surface.

At step 714, organization computing system 104 may calibrate each camerabased on the homography matrix.

FIG. 8 is a block diagram 800 illustrating aspects of operationsdiscussed above in conjunction with method 700, according to exampleembodiments. As shown, block diagram 800 may include inputs 802, a firstset of operations 804, and a second set of operations 806. First set ofoperations 804 and second set of operations 806 may be performed inparallel.

Inputs 802 may include video clips 808 and pose detection 810. In someembodiments, video clips 808 may correspond to trackable framesgenerated by auto-clipping agent 120. In some embodiments, posedetection 810 may correspond to pose data generated by pose detector212. As illustrated, only video clips 808 may be provided as input tofirst set of operations 804; both video clips 804 and post detection 810may be provided as input to second set of operations 806.

First set of operations 804 may include semantic segmentation 812,keyframe matching 814, and STN fitting 816. At semantic segmentation812, playing surface segmenter 216 may be configured to identify playingsurface markings in a broadcast feed. In some embodiments, playingsurface segmenter 216 may be configured to utilize a neural network toidentify playing surface markings. Such segmentation information may beperformed in advance and provided to camera calibration 124 fromdatabase 215. At keyframe matching 814, keyframe matching module 224 maybe configured to match one or more frames in which the image of theplaying surface is clear to one or more templates. At STN fitting 816,STN 226 may implement a neural network to fit a playing surface model tosegmentation information of the playing surface. By fitting the playingsurface model to such output, STN 224 may generate homography matricesfor each keyframe.

Second set of operations 806 may include camera motion estimation 818.At camera flow estimation 818, optical flow module 226 may be configuredto identify the pattern of motion of objects from one trackable frame toanother. For example, optical flow module 226 may use body poseinformation to remove players from the trackable frame information. Onceremoved, optical flow module 226 may determine the motion between framesto identify the motion of a camera between successive frames.

First set of operations 804 and second set of operations 806 may lead tohomography interpolation 816. Optical flow module 226 and STN 224 maywork in conjunction to generate a homography matrix for each trackableframe, such that a camera may be calibrated for each frame. Thehomography matrix may be used to project the track or position ofplayers into real-world coordinates.

FIG. 9 is a flow diagram illustrating a method 900 of tracking players,according to example embodiments. Method 900 may correspond to operation410 discussed above in conjunction with FIG. 4. Method 900 may begin atstep 902.

At step 902, organization computing system 104 may retrieve a pluralityof trackable frames for a match. Each of the plurality of trackableframes may include one or more sets of metadata associated therewith.Such metadata may include, for example, body pose information and cameracalibration data. In some embodiments, player tracking agent 126 mayfurther retrieve broadcast video data.

At step 904, organization computing system 104 may generate a set ofshort tracklets. For example, player tracking agent 126 may match pairsof player patches, which may be derived from pose information, based onappearance and distance to generate a set of short tracklets. Forexample, let H_(j) ^(i) be the player patch of the j^(th) player at timet, and let I_(j) ^(t)={x_(j) ^(t),y_(j) ^(t),w_(j) ^(t),h_(j) ^(t)} bethe image coordinates x_(j) ^(t),y_(j) ^(t), the width w_(j) ^(t), andthe height h_(j) ^(t) of the j^(th) player at time t. Using this, playertracking agent 126 may associated any pair of detections using theappearance cross correlation C_(ij) ^(t)=H_(i) ^(t)*H_(j) ^(t+1) andL_(ij) ^(t)=∥I_(ij) ^(t)−I_(j) ^(t+1)∥₂ ² by finding:

$\arg\;{\max\limits_{ij}{\left( {C_{ij}^{t} + L_{ij}^{t}} \right).}}$

Performing this for every pair may generate a set of short tracklets.The end points of these tracklets may then be associated with each otherbased on motion consistency and color histogram similarity.

For example, let v_(i) be the extrapolated velocity from the end of thei^(th) tracklet and v_(j) be the velocity extrapolated from thebeginning of the j^(th) tracklet. Then c_(ij)=v_(i)·v_(j) may representthe motion consistency score. Furthermore, let p(h)_(i) represent thelikelihood of a color h being present in an image patch i. Playertracking agent 126 may measure the color histogram similarity usingBhattacharyya distance:D _(B)(p _(i) ,p _(i))=−ln(BC(p _(i) ,p _(j))) with BC(p _(i) ,p_(j))=Σ_(h)√{square root over (p _(i)(h)p _(j)(h))}

At step 906, organization computing system 104 may connect gaps betweeneach set of short tracklets. For example, recall that tracking agent 120finds the matching pair of tracklets by finding:

$\arg\;{\max\limits_{ij}{\left( {c_{ij} + {D_{B}\left( {p_{i},\ p_{j}} \right)}} \right).}}$

Solving for every pair of broken tracklets may result in a set of cleantracklets, while leaving some tracklets with large, i.e., many frames,gaps. To connect the large gaps, player tracking agent 126 may augmentaffinity measures to include a motion field estimation, which mayaccount for the change of player direction that occurs over many frames.

The motion field may be a vector field which measures what direction aplayer at a point on the playing surface x would be after some time λ.For example, let X_(i)={x_(i) ^(t)}_(t∈(0,T)) to be the court positionof a player i at every time t. Then, there may exist a pair of pointsthat have a displacement d_(i) ^(λ)(x_(i) ^(t))=x_(i) ^(t)−x_(i) ^(t+1)if λ<T. Accordingly, the motion field may then be:

${{V\left( {x,\lambda} \right)} = {{G\left( {x,5} \right)}*{\sum\limits_{i}{d_{i}^{\lambda}\left( x_{i}^{t} \right)}}}},$where G(x,5) may be a Gaussian kernel with standard deviation equal toabout five feet. In other words, motion field may be a Gaussian blur ofall displacements.

At step 908, organization computing system 104 may predict a motion ofan agent based on the motion field. For example, player tracking system126 may use a neural network (e.g., neural network 232) to predictplayer trajectories given ground truth player trajectory. Given a set ofground truth player trajectories X_(i), player tracking agent 126 may beconfigured to generate the set {circumflex over (V)}(x,λ), where{circumflex over (V)}(x,λ) may be the predicted motion field. Playertracking agent 126 may train neural network 232 to reduce (e.g.,minimize) ∥V(x,λ)−{circumflex over (V)}(x,λ)∥₂ ². Player tracking agent126 may then generate the affinity score for any tracking gap of size λby:K _(ij) =V(x,λ)·d _(ij)

where d_(ij)=x_(i) ^(t)−x_(j) ^(t+λ) is the displacement vector betweenall broken tracks with a gap size of λ. Accordingly, player trackingagent 126 may solve for the matching pairs as recited above. Forexample, given the affinity score, player tracking agent 126 may assignevery pair of broken tracks using a Hungarian algorithm. The Hungarianalgorithm (e.g., Kuhn-Munkres) may optimize the best set of matchesunder a constraint that all pairs are to be matched.

At step 910, organization computing system 104 may output a graphicalrepresentation of the prediction. For example, interface agent 128 maybe configured to generate one or more graphical representationscorresponding to the tracks for each player generated by player trackingagent 126. For example, interface agent 128 may be configured togenerate one or more graphical user interfaces (GUIs) that includegraphical representations of player tracking each prediction generatedby player tracking agent 126.

In some situations, during the course of a match, players or agents havethe tendency to wander outside of the point-of-view of camera. Suchissue may present itself during an injury, lack of hustle by a player,quick turnover, quick transition from offense to defense, and the like.Accordingly, a player in a first trackable frame may no longer be in asuccessive second or third trackable frame. Player tracking agent 126may address this issue via re-identification agent 234.

FIG. 10 is a flow diagram illustrating a method 1000 of trackingplayers, according to example embodiments. Method 1000 may correspond tooperation 410 discussed above in conjunction with FIG. 4. Method 1000may begin at step 1002.

At step 1002, organization computing system 104 may retrieve a pluralityof trackable frames for a match. Each of the plurality of trackableframes may include one or more sets of metadata associated therewith.Such metadata may include, for example, body pose information and cameracalibration data. In some embodiments, player tracking agent 126 mayfurther retrieve broadcast video data.

At step 1004, organization computing system 104 may identify a subset ofshort tracks in which a player has left the camera's line of vision.Each track may include a plurality of image patches associated with atleast one player. An image patch may refer to a subset of acorresponding frame of a plurality of trackable frames. In someembodiments, each track X may include a player identity label y. In someembodiments, each player patch I in a given track X may include poseinformation generated by data set generator 122. For example, given aninput video, pose detection, and trackable frames, re-identificationagent 234 may generate a track collection that includes a lot of shortbroken tracks of players.

At step 1006, organization computing system 104 may generate a galleryfor each track. For example, given those small tracks, re-identificationagent 234 may build a gallery for each track. Re-identification agent234 may build a gallery for each track where the jersey number of aplayer (or some other static feature) is always visible. The body poseinformation generated by data set generator 122 allows re-identificationagent 234 to determine each player's orientation. For example,re-identification agent 234 may utilize a heuristic method, which mayuse the normalized shoulder width to determine the orientation:

$S_{orient} = \frac{{{l_{Lshoulder} - l_{Rshoulder}}}_{2}}{{{l_{Neck} - l_{Hip}}}_{2}}$where l may represent the location of one body part. The width ofshoulder may be normalized by the length of the torso so that the effectof scale may be eliminated. As two shoulders should be apart when aplayer faces towards or backwards from the camera, re-identificationagent 234 may use those patches whose S_(orient) is larger than athreshold to build the gallery. Accordingly, each track X_(n), mayinclude a gallery:G _(n) {I _(i) |S _(orient,i)>thresh}∀I _(i) ∈X _(n)

At step 1008, organization computing system 104 may match tracks using aconvolutional autoencoder. For example, re-identification agent 234 mayuse conditional autoencoder (e.g., conditional autoencoder 240) toidentify one or more features in each track. For example, unlikeconventional approaches to re-identification issues, players in teamsports may have very similar appearance features, such as clothingstyle, clothing color, and skin color. One of the more intuitivedifferences may be the jersey number that may be shown at the frontand/or back side of each jersey. In order to capture those specificfeatures, re-identification agent 234 may train conditional autoencoderto identify such features.

In some embodiments, conditional autoencoder may be a three-layerconvolutional autoencoder, where the kernel sizes may be 3×3 for allthree layers, in which there are 64, 128, 128 channels respectively.Those hyper-parameters may be tuned to ensure that jersey number may berecognized from the reconstructed images so that the desired featuresmay be learned in the autoencoder. In some embodiments, f(I_(i)) may beused to denote the features that are learned from image i.

Using a specific example, re-identification agent 234 may identify afirst track that corresponds to a first player. Using conditionalautoencoder 240, re-identification agent 234 may learn a first set ofjersey features associated with the first track, based on for example, afirst set of image patches included or associated with the first track.Re-identification agent 234 may further identify a second track that mayinitially correspond to a second player. Using conditional autoencoder240, re-identification agent 234 may learn a second set of jerseyfeatures associated with the second track, based on, for example, asecond set of image patches included or associated with the secondtrack.

At step 1010, organization computing system 104 may measure a similaritybetween matched tracks using a Siamese network. For example,re-identification agent 234 may train Siamese network (e.g., Siamesenetwork 242) to measure the similarity between two image patches basedon their feature representations f(I). Given two image patches, theirfeature representations f(I_(i)) and f(I_(j)) may be flattened,connected, and fed into a perception network. In some embodiments, L₂norm may be used to connect the two sub-networks of f(I_(i)) andf(I_(j)). In some embodiments, perception network may include threelayers, which include 1024, 512, and 216 hidden units, respectively.Such network may be used to measure the similarity s(I_(i),I_(j))between every pair of image patches of the two tracks that have no timeoverlapping. In order to increase the robustness of the prediction, thefinal similarity score of the two tracks may be the average of allpairwise scores in their respective galleries:

${S\left( {x_{n\prime}x_{m}} \right)} = {\frac{1}{{G_{n}}{G_{m}}}{\sum\limits_{{i \in G_{n}},{j \in G_{m}}}{s\left( {I_{i},I_{j}} \right)}}}$

Continuing with the aforementioned example, re-identification agent 234may utilize Siamese network 242 to compute a similarity score betweenthe first set of learned jersey features and the second set of learnedjersey features.

At step 1012, organization computing system 104 may associate thetracks, if their similarity score is higher than a predeterminedthreshold. For example, re-identification agent 234 may compute asimilarity score be computed for every two tracks that do not have timeoverlapping. If the score is higher than some threshold,re-identification agent 234 may associate those two tracks may.

Continuing with the above example, re-identification agent 234 mayassociated with first track and the second track if, for example, thesimilarity score generated by Siamese network 242 is at least higherthan a threshold value. Assuming the similarity score is higher than thethreshold value, re-identification agent 234 may determine that thefirst player in the first track and the second player in the secondtrack are indeed one in the same.

FIG. 11 is a block diagram 1100 illustrating aspects of operationsdiscussed above in conjunction with method 1000, according to exampleembodiments.

As shown block diagram 1100 may include input video 1102, pose detection1104, player tracking 1106, track collection 1108, gallery building andpairwise matching 1110, and track connection 1112. Block diagram 1100illustrates a general pipeline of method 1000 provided above.

Given input video 1102, pose detection information 1104 (e.g., generatedby pose detector 212), and player tracking information 1106 (e.g.,generated by one or more of player tracking agent 126, auto-clippingagent 120, and camera calibrator 124), re-identification agent 234 maygenerate track collection 1108. Each track collection 1108 may include aplurality of short broken tracks (e.g., track 1114) of players. Eachtrack 1114 may include one or more image patches 1116 contained therein.Given the tracks 1114, re-identification agent 234 may generate agallery 1110 for each track. For example, gallery 1110 may include thoseimage patches 1118 in a given track that include an image of a player inwhich their orientation satisfies a threshold value. In other words,re-identification agent 234 may generate gallery 1110 for each track1114 that includes image patches 1118 of each player, such that theplayer's number may be visible in each frame. Image patches 1118 may bea subset of image patches 1116. Re-identification agent 234 may thenpairwise match each frame to compute a similarity score via Siamesenetwork. For example, as illustrated, re-identification agent 234 maymatch a first frame from track 2 with a second frame from track 1 andfeed the frames into Siamese network.

Re-identification agent 234 may then connect tracks 1112 based on thesimilarity scores. For example, if the similarity score of two framesexceed some threshold, re-identification agent 234 may connect orassociate those tracks.

FIG. 12 is a block diagram illustrating architecture 1200 of Siamesenetwork 242 of re-identification agent 234, according to exampleembodiments. As illustrated, Siamese network 242 may include twosub-networks 1202, 1204, and a perception network 1205.

Each of two sub-networks 1202, 1204 may be configured similarly. Forexample, sub-network 1202 may include a first convolutional layer 1206,a second convolutional layer 1208, and a third convolutional layer 1210.First sub-network 1202 may receive, as input, a player patch I₁ andoutput a set of features learned from player patch I₁ (denoted f(I₁)).Sub-network 1204 may include a first convolutional layer 1216, a secondconvolutional layer 1218, and a third convolutional layer 1220. Secondsub-network 1204 may receive, as input, a player patch I₂ and may outputa set of features learned from player patch I₂ (denoted f(I₂)). Theoutput from sub-network 1202 and sub-network 1204 may be an encodedrepresentation of the respective player patches I₁,I₂. In someembodiments, the output from sub-network 1202 and sub-network 1204 maybe followed by a flatten operation, which may generate respectivefeature vectors f(I₁) and f(I₂), respectively. In some embodiments, eachfeature vector f(I₁) and f(I₂) may include 10240 units. In someembodiments, the L2 norm of f(I₁) and f(I₂) may be computed and used asinput to perception network 1205.

Perception network 1205 may include three layers 1222-1226. In someembodiments, layer 1222 may include 1024 hidden units. In someembodiments, layer 1224 may include 512 hidden units. In someembodiments, layer 1226 may include 256 hidden units. Perception network1205 may output a similarity score between image patches I₁ and I₂.

FIG. 13A illustrates a system bus computing system architecture 1300,according to example embodiments. System 1300 may be representative ofat least a portion of organization computing system 104. One or morecomponents of system 1300 may be in electrical communication with eachother using a bus 1305. System 1300 may include a processing unit (CPUor processor) 1310 and a system bus 1305 that couples various systemcomponents including the system memory 1315, such as read only memory(ROM) 1320 and random access memory (RAM) 1325, to processor 1310.System 1300 may include a cache of high-speed memory connected directlywith, in close proximity to, or integrated as part of processor 1310.System 1300 may copy data from memory 1315 and/or storage device 1330 tocache 1312 for quick access by processor 1310. In this way, cache 1312may provide a performance boost that avoids processor 1310 delays whilewaiting for data. These and other modules may control or be configuredto control processor 1310 to perform various actions. Other systemmemory 1315 may be available for use as well. Memory 1315 may includemultiple different types of memory with different performancecharacteristics. Processor 1310 may include any general purposeprocessor and a hardware module or software module, such as service 11332, service 2 1334, and service 3 1336 stored in storage device 1330,configured to control processor 1310 as well as a special-purposeprocessor where software instructions are incorporated into the actualprocessor design. Processor 1310 may essentially be a completelyself-contained computing system, containing multiple cores orprocessors, a bus, memory controller, cache, etc. A multi-core processormay be symmetric or asymmetric.

To enable user interaction with the computing device 1300, an inputdevice 1345 may represent any number of input mechanisms, such as amicrophone for speech, a touch-sensitive screen for gesture or graphicalinput, keyboard, mouse, motion input, speech and so forth. An outputdevice 1335 may also be one or more of a number of output mechanismsknown to those of skill in the art. In some instances, multimodalsystems may enable a user to provide multiple types of input tocommunicate with computing device 1300. Communications interface 1340may generally govern and manage the user input and system output. Thereis no restriction on operating on any particular hardware arrangementand therefore the basic features here may easily be substituted forimproved hardware or firmware arrangements as they are developed.

Storage device 1330 may be a non-volatile memory and may be a hard diskor other types of computer readable media which may store data that areaccessible by a computer, such as magnetic cassettes, flash memorycards, solid state memory devices, digital versatile disks, cartridges,random access memories (RAMs) 1325, read only memory (ROM) 1320, andhybrids thereof.

Storage device 1330 may include services 1332, 1334, and 1336 forcontrolling the processor 1310. Other hardware or software modules arecontemplated. Storage device 1330 may be connected to system bus 1305.In one aspect, a hardware module that performs a particular function mayinclude the software component stored in a computer-readable medium inconnection with the necessary hardware components, such as processor1310, bus 1305, display 1335, and so forth, to carry out the function.

FIG. 13B illustrates a computer system 1350 having a chipsetarchitecture that may represent at least a portion of organizationcomputing system 104. Computer system 1350 may be an example of computerhardware, software, and firmware that may be used to implement thedisclosed technology. System 1350 may include a processor 1355,representative of any number of physically and/or logically distinctresources capable of executing software, firmware, and hardwareconfigured to perform identified computations. Processor 1355 maycommunicate with a chipset 1360 that may control input to and outputfrom processor 1355. In this example, chipset 1360 outputs informationto output 1365, such as a display, and may read and write information tostorage device 1370, which may include magnetic media, and solid statemedia, for example. Chipset 1360 may also read data from and write datato RAM 1375. A bridge 1380 for interfacing with a variety of userinterface components 1385 may be provided for interfacing with chipset1360. Such user interface components 1385 may include a keyboard, amicrophone, touch detection and processing circuitry, a pointing device,such as a mouse, and so on. In general, inputs to system 1350 may comefrom any of a variety of sources, machine generated and/or humangenerated.

Chipset 1360 may also interface with one or more communicationinterfaces 1390 that may have different physical interfaces. Suchcommunication interfaces may include interfaces for wired and wirelesslocal area networks, for broadband wireless networks, as well aspersonal area networks. Some applications of the methods for generating,displaying, and using the GUI disclosed herein may include receivingordered datasets over the physical interface or be generated by themachine itself by processor 1355 analyzing data stored in storage 1370or 1375. Further, the machine may receive inputs from a user throughuser interface components 1385 and execute appropriate functions, suchas browsing functions by interpreting these inputs using processor 1355.

It may be appreciated that example systems 1300 and 1350 may have morethan one processor 1310 or be part of a group or cluster of computingdevices networked together to provide greater processing capability.

While the foregoing is directed to embodiments described herein, otherand further embodiments may be devised without departing from the basicscope thereof. For example, aspects of the present disclosure may beimplemented in hardware or software or a combination of hardware andsoftware. One embodiment described herein may be implemented as aprogram product for use with a computer system. The program(s) of theprogram product define functions of the embodiments (including themethods described herein) and can be contained on a variety ofcomputer-readable storage media. Illustrative computer-readable storagemedia include, but are not limited to: (i) non-writable storage media(e.g., read-only memory (ROM) devices within a computer, such as CD-ROMdisks readably by a CD-ROM drive, flash memory, ROM chips, or any typeof solid-state non-volatile memory) on which information is permanentlystored; and (ii) writable storage media (e.g., floppy disks within adiskette drive or hard-disk drive or any type of solid staterandom-access memory) on which alterable information is stored. Suchcomputer-readable storage media, when carrying computer-readableinstructions that direct the functions of the disclosed embodiments, areembodiments of the present disclosure.

It will be appreciated to those skilled in the art that the precedingexamples are exemplary and not limiting. It is intended that allpermutations, enhancements, equivalents, and improvements thereto areapparent to those skilled in the art upon a reading of the specificationand a study of the drawings are included within the true spirit andscope of the present disclosure. It is therefore intended that thefollowing appended claims include all such modifications, permutations,and equivalents as fall within the true spirit and scope of theseteachings.

What is claimed:
 1. A method of generating a player tracking prediction,comprising: retrieving, by a computing system, a broadcast video feedfor a sporting event, the broadcast video feed comprising a plurality ofvideo frames; segmenting, by the computing system, the broadcast videofeed into a unified view, wherein the unified view comprises a pluralityof trackable frames, the plurality of trackable frames is a subset ofthe plurality of video frames; generating, by the computing system, aplurality of data sets based on the plurality of trackable frames,wherein the plurality of data sets comprises playing surfacesegmentation information, ball tracking information, and body poseinformation for each player in each trackable frame; calibrating, by thecomputing system, a camera associated with each trackable frame based onthe playing surface segmentation information and the body poseinformation; generating, by the computing system, a plurality of sets ofshort tracklets based on the plurality of trackable frames and the bodypose information; connecting, by the computing system, each set of shorttracklets by generating a motion field vector for each player in theplurality of trackable frames; and predicting, by the computing system,a future motion of a player based on the player's motion field vectorusing a neural network.
 2. The method of claim 1, wherein segmenting, bythe computing system, the broadcast video feed into a unified viewcomprises: parsing the broadcast video feed to identify a first subsetof video frames corresponding to a same view of the sporting event; anddiscarding a second subset of video frames corresponding to a differentview of the sporting event.
 3. The method of claim 1, whereingenerating, by the computing system, the plurality of data sets based onthe plurality of trackable frames comprises: generating body poseinformation for each player in each trackable frame of the plurality oftrackable frames.
 4. The method of claim 3, wherein calibrating, by thecomputing system, the camera associated with each trackable frame basedon the playing surface segmentation information and the body poseinformation comprises: identifying a pattern of motion between twosuccessive trackable frames by identifying players in each frame usingthe body pose information and removing, from each trackable frame, eachplayer.
 5. The method of claim 1, wherein generating, by the computingsystem, the plurality of data sets based on the plurality of trackableframes comprises: identifying, in each trackable frame of the pluralityof trackable frames, playing surface markings using a trained neuralnetwork configured to identify the playing surface markings.
 6. Themethod of claim 5, wherein calibrating, by the computing system, thecamera associated with each trackable frame based on the playing surfacesegmentation information and the body pose information comprises:retrieving the playing surface markings generated by the trained neuralnetwork; and comparing the playing surface markings to a template ofplaying surface markings to generate one or more keyframes.
 7. Themethod of claim 1, wherein predicting, by the computing system, thefuture motion of the player based on the player's motion field vectorusing a neural network comprises: constructing player motion throughoutthe sporting event using the plurality of trackable frames, the bodypose information, and the calibrated camera.
 8. A system for generatinga player tracking prediction, comprising: a processor; and a memoryhaving programming instructions stored thereon, which, when executed bythe processor, performs one or more operations comprising: retrieving abroadcast video feed for a sporting event, the broadcast video feedcomprising a plurality of video frames; segmenting the broadcast videofeed into a unified view, wherein the unified view comprises a pluralityof trackable frames, the plurality of trackable frames is a subset ofthe plurality of video frames; generating a plurality of data sets basedon the plurality of trackable frames, wherein the plurality of data setscomprises playing surface segmentation information, ball trackinginformation, and body pose information for each player in each trackableframe; calibrating a camera associated with each trackable frame basedon the body pose information; generating a plurality of sets of shorttracklets based on the plurality of trackable frames and the body poseinformation; connecting each set of short tracklets by generating amotion field vector for each player in the plurality of trackableframes; and predicting a future motion of a player based on the player'smotion field vector using a neural network.
 9. The system of claim 8,wherein segmenting the broadcast video feed into a unified viewcomprises: parsing the broadcast video feed to identify a first subsetof video frames corresponding to a same view of the sporting event; anddiscarding a second subset of video frames corresponding to a differentview of the sporting event.
 10. The system of claim 8, whereingenerating the plurality of data sets based on the plurality oftrackable frames comprises: generating body pose information for eachplayer in each trackable frame of the plurality of trackable frames. 11.The system of claim 10, wherein calibrating the camera associated witheach trackable frame based on the playing surface segmentationinformation and the body pose information comprises: identifying apattern of motion between two successive trackable frames by identifyingplayers in each frame using the body pose information and removing, fromeach trackable frame, each player.
 12. The system of claim 8, whereingenerating the plurality of data sets based on the plurality oftrackable frames comprises: identifying, in each trackable frame of theplurality of trackable frames, playing surface markings using a trainedneural network configured to identify the playing surface markings. 13.The system of claim 12, wherein calibrating the camera associated witheach trackable frame based on the playing surface segmentationinformation and the body pose information comprises: retrieving theplaying surface markings generated by the trained neural network; andcomparing the playing surface markings to a template of playing surfacemarkings to generate one or more keyframes.
 14. The system of claim 8,wherein predicting the future motion of the player based on the player'smotion field vector using a neural network comprises: constructingplayer motion throughout the sporting event using the plurality oftrackable frames, the body pose information, and the calibrated camera.15. A non-transitory computer readable medium including one or moresequences of instructions that, when executed by one or more processors,perform one or more operations comprising: retrieving, by a computingsystem, a broadcast video feed for a sporting event, the broadcast videofeed comprising a plurality of video frames; segmenting, by thecomputing system, the broadcast video feed into a unified view, whereinthe unified view comprises a plurality of trackable frames, theplurality of trackable frames is a subset of the plurality of videoframes; generating, by the computing system, a plurality of data setsbased on the plurality of trackable frames, wherein the plurality ofdata sets comprises playing surface segmentation information, balltracking information, and body pose information for each player in eachtrackable frame; calibrating, by the computing system, a cameraassociated with each trackable frame based on the playing surfacesegmentation information and the body pose information; generating, bythe computing system, a plurality of sets of short tracklets based onthe plurality of trackable frames and the body pose information;connecting, by the computing system, each set of short tracklets bygenerating a motion field vector for each player in the plurality oftrackable frames; and predicting, by the computing system, a futuremotion of a player based on the player's motion field vector using aneural network.
 16. The non-transitory computer readable medium of claim15, wherein segmenting, by the computing system, the broadcast videofeed into a unified view comprises: parsing the broadcast video feed toidentify a first subset of video frames corresponding to a same view ofthe sporting event; and discarding a second subset of video framescorresponding to a different view of the sporting event.
 17. Thenon-transitory computer readable medium of claim 15, wherein generating,by the computing system, the plurality of data sets based on theplurality of trackable frames comprises: generating body poseinformation for each player in each trackable frame of the plurality oftrackable frames.
 18. The non-transitory computer readable medium ofclaim 17, wherein calibrating, by the computing system, the cameraassociated with each trackable frame based on the playing surfacesegmentation information and the body pose information comprises:identifying a pattern of motion between two successive trackable framesby identifying players in each frame using the body pose information andremoving, from each trackable frame, each player.
 19. The non-transitorycomputer readable medium of claim 15, wherein generating, by thecomputing system, the plurality of data sets based on the plurality oftrackable frames comprises: identifying, in each trackable frame of theplurality of trackable frames, playing surface markings using a trainedneural network configured to identify the playing surface markings. 20.The non-transitory computer readable medium of claim 19, whereincalibrating, by the computing system, the camera associated with eachtrackable frame based on the playing surface segmentation informationand the body pose information comprises: retrieving the playing surfacemarkings generated by the trained neural network; and comparing theplaying surface markings to a template of playing surface markings togenerate one or more keyframes.